import axios from "axios";
import { Message, MessageBox } from "element-ui";
import store from "../store";
import { getToken } from "@/utils/auth";
// 创建axios实例
console.log("process.env.BASE_API---", process.env.BASE_API);

const service = axios.create({
  // baseURL: process.env.BASE_API, // api 的 base_url
  // baseURL: "http://archive-api.debaidata.com", // api 的 base_url
  // baseURL: "http://demo1-api.debaidata.com", // api 的 base_url
  // baseURL: "http://demo2-api.debaidata.com", // api 的 base_url
  baseURL: "http://192.168.31.3:1024", // api 的 base_url
  // baseURL: "http://127.0.0.1:1024", // api 的 base_url
  // baseURL: "http://gongcheng-api.debaidata.com", // api 的 base_url
  // baseURL: "http://hos-api.debaidata.com", // api 的 base_url
  // baseURL: "http://10.254.0.138:1024", // api 的 base_url
  // baseURL: "http://192.168.20.133:1024", // api 的 base_url
  timeout: 20000 // 请求超时时间
});
const TOKEN_HEADER = "x-access-token";

// request拦截器
service.interceptors.request.use(
  config => {
    // config.headers['x-access-token'] = (getToken() == null || getToken() == undefined) ? '' : getToken()

    config.headers[TOKEN_HEADER] =
      getToken() == null || getToken() == undefined ? "" : getToken();
    return config;
  },
  error => {
    // Do something with request error
    Promise.reject(error);
  }
);

// response 拦截器
service.interceptors.response.use(
  response => {
    /**
     * code为非20000是抛错 可结合自己业务进行修改
     */
    const res = response.data;
    // User.credentials.expired:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;
    if (
      res.code == "User.credentials.expired" ||
      res.code == "50012" ||
      res.code == "50014"
    ) {
      MessageBox.confirm(
        "你已被登出，可以取消继续留在该页面，或者重新登录",
        "重新登录",
        {
          confirmButtonText: "重新登录",
          cancelButtonText: "取消",
          type: "warning"
        }
      ).then(() => {
        // sessionStorage.clear()
        // localStorage.clear()
        localStorage.removeItem("AJReportToken");
        window.location.href = "/";
      });
    } else if (res.code !== "200" && res.code !== 0) {
      Message({
        message: res.message,
        type: "error",
        duration: 5 * 1000
      });
      return response.data;
    } else {
      return response.data;
    }
  },
  error => {
    Message({
      message: error.message,
      type: "error",
      duration: 5 * 1000
    });
    return Promise.reject(error);
  }
);

export default service;
